#ifndef HTTP_H
#define HTTP_H
#include <stddef.h>
#include <stdio.h>

enum request_status {
  REQUEST_INVALID_URL = -1,
  REQUEST_INVALID_RESPONSE = -2
};

enum request_type {
  REQUEST_GET,
  REQUEST_POST
};

/**
 * @brief faz um get http
 * @param url URL (host + porta + path) do request
 * @param body Resposta onde o header e o corpo serao armazenados. 
 * @param response_header Cabecalho do HTTP response
 * @return Codigo de status HTTP
 * 
 * Constroi uma mensagem de request e envia a uma url. O resultado
 * eh escrito no arquivo de corpo.
 * 
 * @warning a string apontada por *response_header, se diferente
 * de NULL, serah desalocada e alocada novamente para acomodar
 * novos headers. Apos a ultima chamada, voce deve desaloca-la.
 * 
 * @see request_status
 * 
 */
int http_get(const char *url, FILE *body, char **response_header);

#endif